package testes;

import static org.junit.Assert.*;
import iscte.es.copaPaises.businessLayer.Cartao;
import iscte.es.copaPaises.businessLayer.Equipa;
import iscte.es.copaPaises.businessLayer.Golo;
import iscte.es.copaPaises.businessLayer.Jogador;
import iscte.es.copaPaises.businessLayer.Membro;

import java.util.HashSet;
import java.util.Set;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class MembroTest {
	private Membro m;
	private int minuto_entrada;
	private int minuto_saida;
	private Equipa equipa;
	private Jogador jogador;

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Before
	public void setUp() throws Exception {
		m=new Membro();
		minuto_entrada=0;
		minuto_saida=90;
		equipa=new Equipa();
		jogador=new Jogador();
	}

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public void testMembro() {
		assertTrue("Membro()",Membro.allInstances.contains(m));
	}

	@Test
	public void testMembroIntIntEquipaJogador() {
		m=new Membro(minuto_entrada,minuto_saida,equipa,jogador);
		assertTrue("Membro()",Membro.allInstances.contains(m));
	}

	@Test
	public void testMinuto_entrada() {
		m.setMinuto_entrada(minuto_entrada);
		assertEquals("Setter/Getter Membro.minuto_entrada()", m.minuto_entrada(),minuto_entrada);
	}

	@Test
	public void testMinuto_saida() {
		m.setMinuto_saida(minuto_saida);
		assertEquals("Setter/Getter Membro.minuto_saida()", m.minuto_saida(),minuto_saida);
	}

	@Test
	public void testEquipa() {
		m.setEquipa(equipa);
		assertEquals("Setter/Getter Membro.equipa()", m.equipa(),equipa);
	}

	@Test
	public void testJogador() {
		m.setJogador(jogador);
		assertEquals("Setter/Getter Membro.jogador()", m.jogador(),jogador);
	}

	@Test
	public void testCartoes() {
	Cartao cartao1=new Cartao();
	Cartao cartao2=new Cartao();
	Cartao cartao3=new Cartao();
	Set<Cartao> cartoes=new HashSet<Cartao>();
	cartoes.add(cartao1);
	cartoes.add(cartao2);
	m.setCartoes(cartoes);
	assertEquals("Setter/Getter Membro.cartoes()",cartoes,m.cartoes());
	}

	@Test
	public void testGolos() {
		Golo g1=new Golo();
		Golo g2=new Golo();
		Golo g3=new Golo();
		Set<Golo> golos=new HashSet<Golo>();
		golos.add(g1);
		golos.add(g2);
		m.setGolos(golos);
		assertEquals("Setter/Getter Membro.golos()",golos,m.golos());
	}

	@Test
	public void testToString() {
		m=new Membro(minuto_entrada,minuto_saida,equipa,jogador);
		assertEquals("Membro.toString()",m.toString(),"Membro [minuto_entrada=" + minuto_entrada + ", minuto_saida=" + minuto_saida + ", equipa=" + equipa + ", jogador=" + jogador + "]\n");
	}

}
